/**
 * 
 */
package cz.cuni.mff.abacs.burglar.logics.objects.items;

import cz.cuni.mff.abacs.burglar.logics.objects.BaseInterface;
import java.util.List;


/**
 * Interface of all item holding containers.
 * 
 * 
 * @author abacs
 *
 */
public interface Inventory {
	
	
	
	
	
	// -------------------------------------------------------------------------
	
	
	/**
	 * Inserts a new item.
	 */
	public void addItem(Item item);
	
	
	/**
	 * Inserts multiple items.
	 */
	public void addItems(List<Item> items);
	
	
	/**
	 * 
	 */
	public Item removeItem(int id);
	
	
	/**
	 * 
	 */
	public boolean hasItem(int id);
	
	
	/**
	 * Has any item of the selected type?
	 */
	public boolean hasItemOfType(BaseInterface.Type type);
	
	
	/**
	 * Returns the id of the first item of the selected type, or -1.
	 * 
	 * @param type
	 * @return 
	 */
	public int getItemIdOfType(BaseInterface.Type type);
	
	
	/**
	 * Returns all items.
	 */
	public List<Item> getItems();
	
	
}
